////必须自定义析构函数的情况
//#include <iostream>
//#include <cstring>
//
//using namespace std;
//
//class A {
//public:
//    A(int i = 0) : m_i(i), m_p(new int), m_f(open("./file", O_CREAT | RDWR, 0644)) {
//        //【int m_i = i;】//定义m_i,初值为i
//        //[int* m_p = new int;]//定义m_p,初值为指向一块堆内存（动态资源）
//        //[int m_f = open(...);]//定义m_f,初值为文件描述符-->文件表等内核结构（动态资源）
//
//    }
//
////    //默认的析构函数
////    ~A(){
////        释放m_i本身所占的内存空间
////    }
//    ~A() {
//        delete m_p;
//        close(m_f);
//    };
//private:
//    int m_i;
//    int *m_p;
//    int m_f;
//};
//
//int main(void) {
//    A a;//定义a,利用a.A()
//    return 0;
//}//A.~a() 释放a本身所占的内存空间